package com.star.springai.chat.tools;

import java.time.LocalDateTime;
import java.util.List;

import lombok.extern.slf4j.Slf4j;

import com.star.springai.chat.models.request.AlertRequest;
import com.star.springai.chat.models.response.AlertResponse;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class AlertTools {

    @Tool(name = "根据查询条件获取报警列表", description =
            "用户的语言中如果包含查询报警的字眼，根据用户语义中的检索条件，封装成查询对象调用该tool，" +
                    "如果存在今天、这个月、今年等跟时间相关的字眼，请先根据DateTimeTools获取当前日期，获取当前时间，再调用该tool" +
                    "request对象中的status有三种状态，TO_BE_PROCESS、PROCESSING、FINISHED，分别表示待处理、处理中、已完成" +
                    "request对象中的startTime和endTime表示查询的开始时间和结束时间" +
                    "request对象中的number表示报警单号")
    List<AlertResponse> getAlertList(AlertRequest request) {
        log.info("Request: {}", request);

        AlertResponse alertResponse1 = new AlertResponse();
        alertResponse1.setId(1L);
        alertResponse1.setStatus("TO_BE_PROCESS");
        alertResponse1.setNumber("BJ-2025-0001");
        alertResponse1.setLocation("剑南大道");
        alertResponse1.setProcessor("");
        alertResponse1.setStartTime(LocalDateTime.now());
        alertResponse1.setEndTime(LocalDateTime.now());


        AlertResponse alertResponse2 = new AlertResponse();
        alertResponse2.setId(2L);
        alertResponse2.setStatus("PROCESSING");
        alertResponse2.setNumber("BJ-2025-0002");
        alertResponse2.setLocation("天府大道");
        alertResponse2.setProcessor("小明");
        alertResponse2.setStartTime(LocalDateTime.now());
        alertResponse2.setEndTime(LocalDateTime.now());

        return List.of(alertResponse1, alertResponse2);

    }


    @Tool(name = "根据订单号查询单条报警信息", description =
            "用户的语言中如果包含根据订单号查询报警的字眼，根据用户语义拆解出订单号，调用该tool，" +
                    "如果存在今天、这个月、今年等跟时间相关的字眼，请先根据DateTimeTools获取当前日期，获取当前时间，再调用该tool")
    AlertResponse getAlertByNumber(String number) {
        log.info("Request: {}", number);

        AlertResponse alertResponse = new AlertResponse();
        alertResponse.setId(1L);
        alertResponse.setStatus("TO_BE_PROCESS");
        alertResponse.setNumber(number);
        alertResponse.setLocation("剑南大道");
        alertResponse.setProcessor("");
        alertResponse.setStartTime(LocalDateTime.now());
        alertResponse.setEndTime(LocalDateTime.now());
        return alertResponse;
    }

}